/**
 * @PROJECT_NAME design_patterns
 * @DESCRIPTION 简单工厂模式
 * <p>
 * 解除demo1中咖啡店中直接new咖啡的强绑定,
 * <p>
 * 简单工厂不是一种设计模式，反而是一种编程习惯
 * <p>
 * 简单工厂包含以下角色：
 * <p>
 * 抽象产品：定义了产品的规范，描述了产品的主要特性和功能
 * <p>
 * 具体产品：实现或继承抽象产品的子类
 * <p>
 * 具体工厂：提供了创建产品的方法，调用者通过该方法来获取产品
 * <p>
 * 优点：封装了创建对象的过程，可以通过参数直接获取对象，把对象的创建和业务逻辑层分开，这样以后就会避免了修改客户代码，
 * 如果要实现新产品直接修改工厂类，而不是在原代码中修改，这样就降低了客户代码修改的可能性，更加容易扩展，
 * <p>
 * 缺点：增加新产品时还是需要修改简单工厂类代码，违背了"开闭原则"
 * @AUTHOR CNBruceLee
 * @DATE 2021/7/10 18:06
 */
package com.bruce.demo2.patterns.demo1.creational.demo02.factoryMethod.demo2;
